using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Charting._DataManagement
{
    /// <summary>
    /// <para>Generate Aviation Cartographic Features</para>
    /// <para>Creates cartographic copies of features based on the area of interest they fall into.</para>
    /// <para>根据要素所属的感兴趣区域创建要素的制图副本。</para>
    /// </summary>    
    [DisplayName("Generate Aviation Cartographic Features")]
    public class GenerateAviationCartographicFeatures : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateAviationCartographicFeatures()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_source_target_carto_features">
        /// <para>Source and Target Cartographic Features</para>
        /// <para><xdoc>
        ///   <para>Associates source feature classes with the cartographic feature classes in which they will be generating features.</para>
        ///   <para>The first row is the source feature class to copy from, and the second row is the target cartographic feature class to copy features to.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将源要素类与将在其中生成要素的制图要素类相关联。</para>
        ///   <para>第一行是要从中复制的源要素类，第二行是要将要素复制到的目标制图要素类。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_aoi_features">
        /// <para>Area of Interest Features</para>
        /// <para>A layer of area of interest (AOI) polygon features, that is used to spatially filter source features.</para>
        /// <para>感兴趣区域 （AOI） 面要素图层，用于在空间上过滤源要素。</para>
        /// </param>
        public GenerateAviationCartographicFeatures(object _source_target_carto_features, object _aoi_features)
        {
            this._source_target_carto_features = _source_target_carto_features;
            this._aoi_features = _aoi_features;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Generate Aviation Cartographic Features";

        public override string CallName => "aviation.GenerateAviationCartographicFeatures";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_source_target_carto_features, _aoi_features, _extraction_query_table, _inclusion_exclusion_table, _carto_feature_classes];

        /// <summary>
        /// <para>Source and Target Cartographic Features</para>
        /// <para><xdoc>
        ///   <para>Associates source feature classes with the cartographic feature classes in which they will be generating features.</para>
        ///   <para>The first row is the source feature class to copy from, and the second row is the target cartographic feature class to copy features to.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将源要素类与将在其中生成要素的制图要素类相关联。</para>
        ///   <para>第一行是要从中复制的源要素类，第二行是要将要素复制到的目标制图要素类。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Source and Target Cartographic Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _source_target_carto_features { get; set; }


        /// <summary>
        /// <para>Area of Interest Features</para>
        /// <para>A layer of area of interest (AOI) polygon features, that is used to spatially filter source features.</para>
        /// <para>感兴趣区域 （AOI） 面要素图层，用于在空间上过滤源要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Area of Interest Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _aoi_features { get; set; }


        /// <summary>
        /// <para>Extraction Query Table</para>
        /// <para>A table of where clauses to further filter source features based on an attribute query.</para>
        /// <para>用于根据属性查询进一步过滤源要素的 where 子句的表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Extraction Query Table")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _extraction_query_table { get; set; } = null;


        /// <summary>
        /// <para>Cartographic Exceptions Table</para>
        /// <para>A table identifying manually included or excluded source features.</para>
        /// <para>标识手动包含或排除的源要素的表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cartographic Exceptions Table")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _inclusion_exclusion_table { get; set; } = null;


        /// <summary>
        /// <para>Updated Cartographic Feature Classes</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Cartographic Feature Classes")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public List<object> _carto_feature_classes { get; set; }


        public GenerateAviationCartographicFeatures SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}